﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Media.Imaging;

namespace iNet.Media.Imaging
{
	/// <summary>
	/// GIF 影像編碼工作。
	/// </summary>
	public class GifImageEncodeTask : BasicImageEncodeTask
	{
		#region 建構子
		/// <summary>
		/// 初始化新的 GifImageEncodeTask 執行個體。
		/// </summary>
		public GifImageEncodeTask()
			: base(ImageFormats.Gif)
		{ }
		/// <summary>
		/// 初始化新的 GifImageEncodeTask 執行個體。
		/// </summary>
		/// <param name="destination">儲存編碼結果的媒體儲存。</param>
		public GifImageEncodeTask(MediaStorage destination)
			: this()
		{
			this.Destination = destination;
		}
		#endregion
		#region CreateEncoder
		internal override BitmapEncoder CreateEncoder()
		{
			return new GifBitmapEncoder();
		}
		#endregion
		#region SupportedMediaEncodeRequests
		/// <summary>
		/// 取得支援的編碼請求組合。
		/// </summary>
		public override MediaEncodeRequests SupportedMediaEncodeRequests
		{
			get
			{
				return 0;
			}
		}
		#endregion
	}

	/// <summary>
	/// GIF 影像編碼工作工廠。
	/// </summary>
	public class GifImageEncodeTaskFactory : ImageEncodeTaskFactory
	{
		#region 建構子
		/// <summary>
		/// 初始化新的 GifImageEncodeTaskFactory 執行個體。
		/// </summary>
		public GifImageEncodeTaskFactory()
			: base("GIF Image EncodeTask Factory", ImageFormats.Gif)
		{ }
		#endregion
		#region CreateEncodeTask
		/// <summary>
		/// 建立影像編碼工作。
		/// </summary>
		/// <param name="destination">儲存編碼結果的媒體儲存。</param>
		/// <returns>影像編碼工作。</returns>
		public override MediaEncodeTask CreateEncodeTask(MediaStorage destination)
		{
			return new GifImageEncodeTask(destination);
		}
		#endregion
		#region SupportedMediaEncodeRequests
		/// <summary>
		/// 取得支援的編碼請求組合。
		/// </summary>
		public override MediaEncodeRequests SupportedMediaEncodeRequests
		{
			get
			{
				return 0;
			}
		}
		#endregion
	}
}
